package com.tongfusoft.document.manager.profile.service;

import java.util.List;

import com.tongfusoft.da.pagehelper.PageInfo;
import com.tongfusoft.document.entity.*;


public interface InputProfileService {

	/**
	 * 创建检入模版
	 * @param profile
	 * @param user
	 */
	public void createProfile(InputProfiles profile,Users user);
	
	/**
	 * 修改检入模版
	 * @param profile
	 * @param user
	 */
	public void updateProfile(String profileId,InputProfiles profile,Users user);
	
	/**
	 * 删除检入模版
	 * @param profile
	 * @param user
	 */
	public void deleteProfile(InputProfiles profile,Users user);
	
	
	/**
	 * 添加FieldSet 到Profile
	 * @param fieldset
	 * @param user
	 */
	public void addFieldSets(IpFieldsets fieldset,Users user);
	
	/**
	 * 修改FieldSet
	 * @param fieldset
	 * @param user
	 */
	public void updateFieldSet(IpFieldsets fieldset,Users user);
	
	/**
	 * 从Profile 删除FieldSet
	 * @param fieldset
	 * @param user
	 */
	public void deleteFieldSets(IpFieldsets fieldset,Users user);
	
	/**
	 * 添加metaData 到 FieldSet
	 * @param metaData
	 * @param user
	 */
	public void addMetaDataToFieldSet(FieldsetHasMetas metaData,Users user);
	
	/**
	 * 从FieldSet 删除 metaData
	 * @param metaData
	 * @param user
	 */
	public void deleteMetaDataToFieldSet(FieldsetHasMetas metaData,Users user);
	
	/**
	 * 获取模版列表
	 * @param profile
	 * @return
	 */
	public PageInfo profileList(int pageSize,int pageIndex,InputProfiles profile);
	/**
	 * 获取FieldSet列表
	 * @param fieldset
	 * @return
	 */
	public List<IpFieldsets> FieldSetList(IpFieldsets fieldset);
	
	/**
	 * 过滤当前模版中包含的metaData的列表
	 * @param fieldset
	 * @return
	 */
	public List<MetadataDefine> metaDataList(InputProfiles profile);
	
	
	/**
	 * 修改模版启动状态
	 * @param profile
	 * @param user
	 */
	public void updateEnableProfile(InputProfiles profile,String isEnable,Users user);
	/**
	 * 通过Id获取模板
	 * @param profilesId
	 * @return
	 */
	public InputProfiles getInputProfiles(InputProfiles profile);
	/**
	 * 通过Id获取Fieldsets
	 * @param ipFieldsets
	 * @return
	 */
	public IpFieldsets getIpFieldsets(IpFieldsets ipFieldsets);
	/**
	 * 获得FieldsetHasMetas
	 * @param ipFieldsets
	 * @return
	 */
	public FieldsetHasMetas getFieldsetHasMetas(FieldsetHasMetas fieldsetHasMetas);
	/**
	 * 通过fieldSetId查看该fieldSet拥有的元数据
	 * @param fieldsetHasMetas
	 * @return
	 */
	public List<FieldsetHasMetas> getMetaDataIdList(FieldsetHasMetas fieldsetHasMetas);
	
	/**
	 * 查询模板的所有元数据
	 * @param profile
	 * @return
	 */
	public List<FieldsetHasMetas> getMetaDataIdByProfileId(InputProfiles profile);
	/**
	 * 通过fieldSetID查找出模板id
	 * @param ipFieldsets
	 * @return
	 */
	public InputProfiles getInputProfilesByFieldSetId(IpFieldsets ipFieldsets);
	/**
	 * 获得某fieldset的metaData和该模板不存在的metatada列表
	 * @param fieldset
	 * @return
	 */
	public List<MetadataDefine> metaDataListByFieldSet(IpFieldsets ipFieldsets);
	
	/**
	 * 从FieldSet 更新metaData
	 * @param metaData
	 * @param user
	 */
	public void updateMetaDataToFieldSet(FieldsetHasMetas metaData,Users user);
	/**
	 * 查询fieldset有的元数据
	 * @param ipFieldsets
	 * @return
	 */
	public List<MetadataDefine> fieldsetHasMetadata(IpFieldsets ipFieldsets);
	
	
	/**
	 * 所有有效模版
	 * @return
	 */
	public List<InputProfiles> validProfile();

	
	public void addFieldSetMetada(String metadataIdList, String metaSortList,
			String isRequireList, String fieldsetId, Users user);

	public void updateFieldSetMetadata(String metadataIdList,
			String metaSortList, String isRequireList, String fieldsetId,
			Users user);
	
}
